package cn.itcast.com.homework.day729;

import java.io.*;

/*
2. 递归查找指定目录中(包括子目录中)，所有的.java文件，
   并且，把所有这些找到的java文件，复制到一个指定的目录下
  目录结构同昨天，递归删除那道题的firstLevel

   目录结构为如下(尽量不要在c盘中测试哈)
       firstLevel目录中，包含一个secondLevel目录和a1.txt和b1.java文件
   secondLevel目录中包含dir1和dir2两个目录，和a2.txt和b2.java文件
   dir1目录中包含a3.txt和b3.java文件
   dir2目录是一个空目录
 */
public class test2 {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\代码\\代码\\代码\\cn\\itcast\\com\\file\\firstLevel");
        //System.out.println(Arrays.toString(file.listFiles()));
        //获得该路径下的所有文件
        delete(file);


    }
    //通过遍历将文件删除，将文件夹继续向下找
    public static void delete(File file) throws IOException {

        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()){
                if (files[i].getName().endsWith("java")){
                    //在day729创建java文件，文件名为files.getname
                    File file2 = new File("D:\\代码\\代码\\代码\\cn\\itcast\\com\\file",files[i].getName());
                    file2.createNewFile();

                    FileInputStream fileInputStream = new FileInputStream(files[i]);
                    byte[] bytes = new byte[1024];
                    fileInputStream.read(bytes);

                    FileOutputStream fileOutputStream = new FileOutputStream("D:\\代码\\代码\\代码\\cn\\itcast\\com\\file"+files[i].getName());
                    fileOutputStream.write(bytes);
                    //*****************************************
                    //注意释放资源，不然无法删除
                    //*****************************************
                    fileInputStream.close();
                    fileOutputStream.close();
                }
                files[i].delete();
            }else if (files[i].isDirectory()){
                delete(files[i]);
            }
        }
        file.delete();
    }
}